package metodos;

import java.util.ArrayList;


public class TablaPrism {
    String nombreAtributo;
    ArrayList<String> valores;
    ArrayList<Integer> cantidades;
    ArrayList<Integer> cantidadesTotales;
    
    public TablaPrism(){
        valores = new ArrayList<String>();
        cantidades = new ArrayList<Integer>();
        cantidadesTotales = new ArrayList<Integer>();
    }
    
    public void Agregar(String valor){
        int indice = getIndice(valor);
        if(indice > -1){
            cantidades.set(indice, cantidades.get(indice) + 1);
            cantidadesTotales.set(indice, cantidadesTotales.get(indice) + 1);
        } else {
            valores.add(valor);
            cantidades.add(1);
            cantidadesTotales.add(1);
        }
    }
    
    public void AgregarSinContar(String valor){
        int indice = getIndice(valor);
        if(indice > -1){
            cantidadesTotales.set(indice, cantidadesTotales.get(indice) + 1);
        } else {
            valores.add(valor);
            cantidades.add(0);
            cantidadesTotales.add(1);
        }
    }
    
    public int getIndice(String valor){
        int indice = -1;
        for (int i = 0; i < valores.size(); i++) {
            if(valores.get(i).equals(valor)){
                indice = i;
                break;
            }
        }
        return indice;
    }
    
    public String getNombreAtributo() {
        return nombreAtributo;
    }

    public void setNombreAtributo(String nombreAtributo) {
        this.nombreAtributo = nombreAtributo;
    }
    
    public String getElemento(int indice){
        return valores.get(indice);
    }
    
    public float getPorcentajeElemento(int indice){
        return cantidades.get(indice)*100f/cantidadesTotales.get(indice);
    }
    
    public int getCantidadTotal(int indice){
        return cantidadesTotales.get(indice);
    }
    
    public int getMejorIndice(){
        int indice = 0;
        int mayor = 0;
        for (int i = 0; i < cantidades.size(); i++) {
            int valor = cantidades.get(i)*100/cantidadesTotales.get(i);
            if(valor > mayor){
                indice = i;
                mayor = valor;
            }
        }
        return indice;
    }
    
    public String getMejorValor(){
        return valores.get(getMejorIndice());
    }
    
}
